// 角色管理

import { defineStore } from 'pinia'
import { getRoleApi,addRoleApi,delRoleApi,editRoleApi } from '../api/rolesApi'
import { ElMessage } from 'element-plus'

const useRolesStore = defineStore('roles', {
  // 数据管理单元
  state: () => {
    return {
      roleList: [],
      dialogVisible: false
    }
  },
  // 数据操作单元
  actions: {
    // 获取角色数据
    getRolesAction() {
      getRoleApi().then(res => {
        // console.log(res,'角色数据-----')
        if(res.code === 200) {
          this.roleList = res.list
        } else {
          console.log(res.msg,'角色数据获取失败------')
        }
      })
    },
    // 新增
    addRoleAction(data) {
      addRoleApi(data).then(res => {
        // console.log(res,'新增角色-------')
        if(res.code === 200) {
          ElMessage({
            type: 'success',
            message: '新增成功'
          })
          // 重新获取数据
          this.getRolesAction()
        } else {
          ElMessage({
            type: 'error',
            message: res.msg
          })
        }
      })
    },
    // 删除
    delRoleAction(id) {
      delRoleApi(id).then(res => {
        // console.log(res,'删除角色--------')
        if(res.code === 200) {
          ElMessage({
            type: 'success',
            message: '删除成功'
          })
          // 重新获取数据
          this.getRolesAction()
        } else {
          ElMessage({
            type: 'error',
            message: res.msg
          })
        }
      })
    },
    // 编辑
    editRoleAction(data) {
      editRoleApi(data).then(res => {
        // console.log(res,'编辑角色-------')
        if(res.code === 200) {
          ElMessage({
            type: 'success',
            message: '编辑成功'
          })
          // 重新获取数据
          this.getRolesAction()
        } else {
          ElMessage({
            type: 'error',
            message: res.msg
          })
        }
      })
    },
    // 关闭对话框
    closeDialog() {
      this.dialogVisible = false
    },
    // 打开对话框
    openDialog() {
      this.dialogVisible = true
    }
  }
})

export default useRolesStore
